﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using nmConnectionDatabase;


namespace DarkPassenger
{
    public partial class MenuClientes : Form
    {
        //Se crea el Objeto CONEXIONDB. Se realiza la Conexion y se pasa la Ruta como parametro
        ConexionDB Conexion = new ConexionDB("Data Source=localhost;Initial Catalog=TPVideoJuegos;Integrated Security=True");
        
        public MenuClientes()
        {
            InitializeComponent();
            
        }

        // ****************************************************************************************************
        // ****************************************************************************************************
        // ****************************************************************************************************
        // ********************************** BOTONES Y MENUES ********************************************
        // ****************************************************************************************************
        // ****************************************************************************************************
        // ****************************************************************************************************

        private void CargarGrid(int pestaña)
        {
            String Consulta = "";

            switch (pestaña)
            {
                case 0:
                    Consulta = "Select * from Clientes Where Activo = 1";
                    //Se carga el DataSet de la Conexion pasandole la Query y el NombreTabla
                    Conexion.CargarDataSet(Consulta, "Clientes");
                    grdClientes.DataSource = Conexion.GetDataSet().Tables[0];
                    Conexion.Close();
                    break;
                case 1:
                    Consulta = "Select * from Clientes Where Activo = 0";
                    //Se carga el DataSet de la Conexion pasandole la Query y el NombreTabla
                    Conexion.CargarDataSet(Consulta, "Clientes");
                    grdClientesEliminados.DataSource = Conexion.GetDataSet().Tables[0];
                    Conexion.Close();
                    break;
                default:
                    break;
            }
            
        }

        private void CargarGridConsulta(string Consulta, int pestaña)
        {
            switch (pestaña)
            {
                case 0:
                    Conexion.CargarDataSet(Consulta, "Clientes");
                    grdClientes.DataSource = Conexion.GetDataSet().Tables[0];
                    Conexion.Close();
                    break;
                case 1:
                    Conexion.CargarDataSet(Consulta, "Clientes");
                    grdClientesEliminados.DataSource = Conexion.GetDataSet().Tables[0];
                    Conexion.Close();
                    break;
                default:
                    break;
            }
        }

        private void MenuClientes_Load(object sender, EventArgs e)
        {
            tabControl1.SelectedIndex = 0;
            CargarGrid(0);
            cmbBusqueda.SelectedIndex = 1;
            Autocomplete.SetAutcomplete(ref txtBuscador, ref Conexion, "Nombre");

        }

        private void btnEliminar_Click(object sender, EventArgs e)
        {
            Form EliminarCliente = new MenuClientes_EliminarCliente(Conexion);
            EliminarCliente.ShowDialog();
            CargarGrid(tabControl1.SelectedIndex);
        }

        private void btnActualizar_Click(object sender, EventArgs e)
        {
            Clientes cliente = new Clientes();
            cliente.AltaCliente(Conexion.GetDataSet(), Conexion.GetRutaConexion());
            cliente.BajaCliente(Conexion.GetDataSet(), Conexion.GetRutaConexion());
            cliente.ModificarCliente(Conexion.GetDataSet(), Conexion.GetRutaConexion());
            CargarGrid(tabControl1.SelectedIndex);
        }

        private void btnNuevo_Click(object sender, EventArgs e)
        {
            Form NuevoCliente = new MenuClientes_NuevoCliente(Conexion);
            NuevoCliente.ShowDialog();
            CargarGrid(0);
        }

        private void btnBuscador_Click(object sender, EventArgs e)
        {
            switch (tabControl1.SelectedIndex)
            {
                case 0:
                    switch (cmbBusqueda.SelectedIndex)
	                {
                        case 0:
                            CargarGridConsulta("Select * from Clientes where Clientes.Activo = 1 AND Clientes.DNI LIKE " + "'" + txtBuscador.Text + "'", 0);
                            break;
                        case 1:
                            CargarGridConsulta("Select * from Clientes where Clientes.Activo = 1 AND Clientes.Nombre LIKE " + "'" + txtBuscador.Text + "'", 0);
                            break;
                        default:
                            break;
	                }
                    break;
                case 1:
                    switch (cmbBusqueda.SelectedIndex)
                    {
                        case 0:
                            CargarGridConsulta("Select * from Clientes where Clientes.Activo = 0 AND Clientes.DNI LIKE " + "'" + txtBuscador.Text + "'", 1);
                            break;
                        case 1:
                            CargarGridConsulta("Select * from Clientes where Clientes.Activo = 0 AND Clientes.Nombre LIKE " + "'" + txtBuscador.Text + "'", 1);
                            break;
                        default:
                            break;
                    }
                    break;
                default:
                    break;
            }
        }

        private void grdClientes_RowHeaderMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
        {

            int rowindex = grdClientes.CurrentCell.RowIndex;
            int columnindex = grdClientes.CurrentCell.ColumnIndex;
            MenuClientes_Clienteseleccionado form = new MenuClientes_Clienteseleccionado(grdClientes.SelectedCells);
            form.ShowDialog();
        }

        private void btnModificar_Click(object sender, EventArgs e)
        {
            DataGridViewRow UserSeleccionado = grdClientes.CurrentRow;
            MenuClientes_ModificarCliente form = new MenuClientes_ModificarCliente(Conexion, UserSeleccionado);
            form.ShowDialog();
            CargarGrid(tabControl1.SelectedIndex);
        }
        
        private void MenuClientes_FormClosed(object sender, FormClosedEventArgs e)
        {
            this.Close();
            this.Dispose();
        }
        
        private void btnReiniciar_Click(object sender, EventArgs e)
        {
            CargarGrid(tabControl1.SelectedIndex);
            txtBuscador.Text = "";
        }

        private void txtBuscador_TextChanged(object sender, EventArgs e)
        {
            //String filtro = txtBuscador.Text;
            //Autocomplete.Actualizar(ref Conexion, "DNI", ref txtBuscador, filtro);
        }

        private void grdClientesEliminados_RowHeaderMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            MenuClientes_Clienteseleccionado form = new MenuClientes_Clienteseleccionado(grdClientesEliminados.SelectedCells);
            form.ShowDialog();
        }

        private void cmbBusqueda_SelectedIndexChanged(object sender, EventArgs e)
        {
            switch (cmbBusqueda.SelectedIndex)
            {
                case 0:
                    Autocomplete.SetAutcomplete(ref txtBuscador, ref Conexion, "DNI");
                    break;
                case 1:
                    Autocomplete.SetAutcomplete(ref txtBuscador, ref Conexion, "Nombre");
                    break;
                default:
                    break;
            }
        }

        private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
        {
            switch (tabControl1.SelectedIndex)
            {
                case 0:
                    CargarGrid(0);
                    switch (cmbBusqueda.SelectedIndex)
                    {
                        case 0:
                            Autocomplete.SetAutcomplete(ref txtBuscador, ref Conexion, "DNI");
                            break;
                        case 1:
                            Autocomplete.SetAutcomplete(ref txtBuscador, ref Conexion, "Nombre");
                            break;
                        default:
                            break;
                    }
                    break;
                case 1:
                    CargarGrid(1);
                    switch (cmbBusqueda.SelectedIndex)
                    {
                        case 0:
                            Autocomplete.SetAutcomplete(ref txtBuscador, ref Conexion, "DNI");
                            break;
                        case 1:
                            Autocomplete.SetAutcomplete(ref txtBuscador, ref Conexion, "Nombre");
                            break;
                        default:
                            break;
                    }
                    break;
                default:
                    break;
            }
        }
    }
}